export default {
  data() {
    return {}
  },
  methods: {
    /**
     * 还原成原始的数据格式
     * @param obj 原始的表单json对象
     * @param list 模板字段列表
     */
    restoreFormJson(obj, list) {
      obj.list && obj.list.map(item => {
        const temp = list.find(i => i.id === item.id)
        if (temp) {
          item.disabled = temp.disabled
          item.required = temp.required
        }
        if (item.columns || item.list) {
          this.restoreFormJson(item, list)
        }
      })

      obj.columns && obj.columns.map(item => {
        const temp = list.find(i => i.id === item.id)
        if (temp) {
          item.disabled = temp.disabled
          item.required = temp.required
        }
        if (item.columns || item.list) {
          this.restoreFormJson(item, list)
        }
      })
    },

    /**
     * 扁平化处理，从表单json对象提取字段列表
     * @param obj 原始的表单json对象
     * @param res 默认初始结果数组为[]
     * @returns {*[]}
     */
    flattenFormJson(obj, res = []) {
      res.push(obj)

      if (obj.columns && obj.columns.length) {
        for (const item of obj.columns) {
          this.flattenFormJson(item, res)
        }
      }
      if (obj.list && obj.list.length) {
        for (const item of obj.list) {
          this.flattenFormJson(item, res)
        }
      }

      return res.filter(i => Object.hasOwn(i, 'required') && Object.hasOwn(i, 'disabled'))
    },
    /**
     * 扁平化处理，从表单json对象提取字段列表
     * @param obj 原始的表单json对象
     * @param res 默认初始结果数组为[]
     * @returns {*[]}
     */
    flattenFormJsonLabel(obj, res = []) {
      res.push(obj)

      if (obj.columns && obj.columns.length) {
        for (const item of obj.columns) {
          this.flattenFormJsonLabel(item, res)
        }
      }
      if (obj.list && obj.list.length) {
        for (const item of obj.list) {
          this.flattenFormJsonLabel(item, res)
        }
      }

      return res.filter(i => Object.hasOwn(i, 'label'))
    }
  }
}
